function _new(obj, ...rest) {
    // 基于obj的原型创建一个新的对象
    const newObj = Object.create(obj.prototype);

    // 添加属性到新创建的newObj上, 并获取obj函数执行的结果.
    const result = obj.apply(newObj, rest);

    // 如果执行结果有返回值并且是一个对象, 返回执行的结果, 否则, 返回新创建的对象
    let isObject = typeof result === 'object' && result !== null;
    let isFunction = typeof result === 'function';
    // 如果有返回值且返回值是对象类型，那么就将它作为返回值，否则就返回之前新建的对象
    return isObject || isFunction ? result : newObj;

}





function mynew(fun, ...args) {
    let newobj = Object.create(fun.prototype)
    let res = newobj.apply(fun, args)
    let isObject = typeof res == 'object' && res !== 'null'
    let isFunction = typeof res == 'function'
    return isFunction || isObject ? res : newobj
}